#pragma once

#include <AST/ExprAST.hpp>

class For : public Expr {
  private:
    Expr *init, *condition, *step, *body;

  public:
    For(Expr *init, Expr *condition, Expr *step, Expr *body);

    virtual Value *codegen() override;

    friend class graphviz::GraphGenerator;

    virtual VisitResult accept(ASTVisitor &visistor) const override {
        return visistor.visitForAST(this);
    }
};